|
C# 인트로 |
[1] |
|
등록일:2008-03-27 19:59:57 (0%) 작성자:갤러리정 제목:컬렉션12 : 스택(Stack) 클래스 |
|
7.12 스택(Stack) 클래스
Stack 클래스는 데이터의 Queue 클래스와 비슷하지만 데이터의 삽입과 추출이 후입선출(Last-In First-Out)이라는 측면에서 그 쓰임새가 다릅니다. 즉, 제일 마지막에 들어간 데이터가 제일 먼저 나오는 메모리 구조를 클래스화한 것입니다. 다음의 Stack 클래스의 프로토타입입니다.
▣ Stack 클래스의 프로토타입 |
□ public class Stack : ICollection, IEnumerable, ICloneable |
데이터를 삽입할 때는 Push() 메서드를 사용하며 데이터를 추출할 때는 Pop() 메서드를 사용합니다. 그리고, 추출할 데이터를 삭제하지 않고 데이터만을 가져 올 때는 Queue와 동일하게 Peek() 메서드를 이용합니다.
▣ Stack 클래스의 특징 |
□ 후입선출(Last-In-First-Out) 컬렉션 클래스
□ Push() 메서드는 Stack의 맨 위에 요소를 삽입
□ Pop() 메서드는 Stack의 맨 위에 있는 요소를 삭제하고 데이터를 반환
□ Peek() 메서드는 Stack의 맨 위에 있는 요소를 제거하지 않고 반환 |
& |
StackTest.cs |
Ü Stack을 테스트하는 예제 |
using System; using System.Collections;
public class StackTest{ static void Main(){ Stack stack= new Stack(); stack.Push("Hi"); stack.Push("Hello"); stack.Push("World"); stack.Push("7777"); Print("1. Stack의 목록:", stack ); object obj = stack.Pop();Console.WriteLine("2. Pop:{0}", obj ); obj = stack.Pop();Console.WriteLine("3. Pop:{0}", obj ); Print("4. Pop을 두번한 후의 목록:",stack ); obj = stack.Peek();Console.WriteLine("5. Peek:{0}", obj ); } //main
public static void Print(string info, IEnumerable myCollection ){ Console.Write(info+"\n\t"); IEnumerator myEnumerator = myCollection.GetEnumerator(); while ( myEnumerator.MoveNext() ) Console.Write( "{0}, ",myEnumerator.Current ); Console.WriteLine(); } }/class |
C:\C#Example\07>csc StackTest.cs
C:\C#Example\07>StackTest
1. Stack의 목록:
7777, World, Hello, Hi,
2. Pop:7777
3. Pop:World
4. Pop을 두번한 후의 목록:
Hello, Hi,
5. Peek:Hello |
Stack 객체를 생성한 후 Stack에 4개의 데이터를 삽입합니다. 이 때 사용하는 메서드는 Push() 메서드입니다.
Stack stack= new Stack();
stack.Push("Hi");
stack.Push("Hello");
stack.Push("World");
stack.Push("7777");
삽입한 데이터의 삭제와 추출을 동시에 하는 Pop() 메서드를 이용합니다.
object obj = stack.Pop();
obj = stack.Pop();
Peek() 메서드를 사용하여 데이터의 삭제없이 데이터를 추출하고 있습니다.
obj = stack.Peek();
Stack 메모리 구조를 클래스화했기 때문에 후입선출의 원리를 지키면서 삽입과 삭제가 이루어지고 있는 것에 유의하시면 쉽게 이해하실 수 있습니다. |
[본문링크] 컬렉션12 : 스택(Stack) 클래스
|
[1]
|
|
|
|
|
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=3047 |
|
|
|
|
|
|
|
|
|
Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.
|
|
|